python : 对批量URL检测指定路径是否存在 您所在的位置:网站首页 python 路径 r python : 对批量URL检测指定路径是否存在

python : 对批量URL检测指定路径是否存在

#python : 对批量URL检测指定路径是否存在| 来源: 网络整理| 查看: 265

python : 对批量URL检测指定路径脚本是否存在 使用场景

众所周知在地市HVV中最容易出现的问题是弱口令和shiro等框架漏洞,且很多站是由一家公司建站的,就可以批量探测URL是否存在指定路径。

实际编写背景

知悉某建站公司通用路径和默认口令,且HVV目标中存在大量此公司建站。

实现原理

实际上也是目录扫描,但我们日常用的目录扫描是对某一URL进行大量路径拼接,此脚本是对大量URL进行指定一个路径拼接。 判断依据是返回码200,在第一版的代码中仅仅做了返回码的判断,没有判断页面内容,在实际测试中发现许多不存在的站和跳转回主界面的站。 后更改为检查返回页面中是否存在来判断页面是否真实有效,尽管跳转后回主界面的站无法排除,也排除了大部分没有意义的站,实际测试中更改前输出目标数为80多条,更改后为40多条,由此可见提升还是很大的。 程序结束会输出返回码为200的URL保存在txt文件中。

代码 import requests import concurrent.futures # URL 文件的路径 url_file_path = "urls.txt" # 输出文件的路径 output_file_path = "testss_urls.txt" # 从文件中读取 URL with open(url_file_path, "r") as file: urls = [line.strip() for line in file] def is_valid_page(content): # 在这里,我们检查页面内容是否包含某些特定的字符串 # 这些字符串应该是表示一个页面是有效的标志 # 例如,如果我们知道所有有效的页面都会包含字符串"" # 我们可以如下检查: return "" in content def check_url(url, session): # 如果 URL 不以 http:// 或 https:// 开头,我们假设它是 http 的 if not url.startswith(("http://", "https://")): url = "http://" + url try: #拼接URL 从此处更改需要探测的路径 full_url = url + "/management/webmaster/maindefault" response = session.get(full_url, timeout=5) # 设置一个合理的超时时间 if response.status_code == 200 and is_valid_page(response.text): return full_url except (requests.exceptions.RequestException, Exception) as e: print(f"URL: {full_url}, Error: {str(e)}") return None # 创建一个 requests 的 Session 对象 session = requests.Session() # 使用多线程并行检查 URL with concurrent.futures.ThreadPoolExecutor() as executor: # 使用 session 对象作为 check_url 函数的额外参数 valid_urls = list(filter(None, executor.map(check_url, urls, [session]*len(urls)))) # 将返回状态码为200的URL写入输出文件 with open(output_file_path, "w") as file: for url in valid_urls: file.write(url + "\n") 使用方法

在python文件的同文件夹下创建urls.txt文件,存入需要检测的URL

python 文件名.py

本人菜鸟一个,希望对大家有所帮助,欢迎批评指正。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有